4
תגובות
החלטתי להתעמק בזה כי אני צריך את זה להרבה דברים.
http://www.php.net/manual/en/regexp.reference.subpatterns.php
אחרי באמת יותר משעה שאני יותר עם google translate ומתרגם אני עדיין לא מבין שום דבר, חיפשתי באינטרנט אבל לא מצאתי מדריך נורמלי. אם מישהו יכול לתת לי קו מנחה כל שהוא אני מאד מאד אשמח.
כרגע מה שהבנתי הוא דבר כזה:
1) יש שני דברים ש() עושה
2) כדי להבדיל בין האחד לשני משתמשים ב?
פרט לזה בקושי הבנתי משהו, ואני בן אדם שבאמת שעובד קשה כדי להשיג את הידע שלו. אני גם רוצה אחרי שאדע את זה ברמה מספקת לכתוב על זה מדריך מסכם כאן באתר או בבלוג שלי לגבי זה, בשביל שעוד ישראלים לא ישברו את הראש.
בתודה מראש, ליאור :)
http://www.php.net/manual/en/regexp.reference.subpatterns.php
אחרי באמת יותר משעה שאני יותר עם google translate ומתרגם אני עדיין לא מבין שום דבר, חיפשתי באינטרנט אבל לא מצאתי מדריך נורמלי. אם מישהו יכול לתת לי קו מנחה כל שהוא אני מאד מאד אשמח.
כרגע מה שהבנתי הוא דבר כזה:
1) יש שני דברים ש() עושה
2) כדי להבדיל בין האחד לשני משתמשים ב?
פרט לזה בקושי הבנתי משהו, ואני בן אדם שבאמת שעובד קשה כדי להשיג את הידע שלו. אני גם רוצה אחרי שאדע את זה ברמה מספקת לכתוב על זה מדריך מסכם כאן באתר או בבלוג שלי לגבי זה, בשביל שעוד ישראלים לא ישברו את הראש.
בתודה מראש, ליאור :)
4 תשובות
מה שהסוגריים עושות זה כשאתה מפעיל preg_match הם שומרות במערך ה matches
את החלקים שהתאימו למה שרשמת בסוגריים.
במילה אחרת "תופסת" תאימויות (capturing)
למשל אתה צריך לפרק עם ביטוי רגולרי את האימייל לחלקים. את החלקים הנפרדים שאתר צריך אתה שם בסוגריים.
ראה דגומה
עוד מקרה של שימוש בסוגריים זה כשאתה צריך אפשרות של OR בין כמה אופציות
#I love my (girlfriend|family|friends|colleagues|employees)#u
אבל גם פה הסוגריים עצמן יתפסו את התת מחרוזת שתאמה להם וישימו אותה ב matches.
"התפיסה" דורשת עוד זיכרון ומשאבים ולפעמים אתה צריך סוגריים (בשביל OR) אבל בלי התפיסה עצמה
ואז בתחילת הסוגריים מויסיפים את הסימן ?;
#I love my (?:girlfriend|family|ds|colleagues|employees)#u
בחלקים שנתפסו אתה יכול להשתמש גם בביטוי הרגולרי עצמו או בביטוי של replace
"# < div class = (\"|') .* \\1 > #uxi "
שבדוגמה מעל אתה "תופס" את הסימן שפתח את ה class ומוודא שהאטריביוט נסגר בדיוק עם אותו סימן.
preg_replace("#<div>(.*)</div>#ui", "<span>\\1</span>", $src)
-----
p.s. אם התשובה הזאת מספקת, אתה יכול לקחת, לארוז אותה לפי ההוראות לכתיבת מדריך טוב, להוסיף עוד קצת דוגמאות והסברים שתגלה מלשחק בעצמך ולפרסם בתור מדריך.
p.p.s תנסה לא לתרגם משפטים עם גוגל טרנסלייט, אלה מילים בודדות שאתה לא מכיר. את המשפטים תנסה להרכיב לבד.
תודה גדולה מאד, אתה יכול להסביר לי בבקשה את הביטוי הרגולרי הבא:
^(?:(?!hey).)*$
ענה
iiddaannyy
ב
08 לאפריל 2013
#
1. יש את :? כדי לבטל את התפיסה של התת-תבנית.
2. יש את !? כדי לסמן "הכל חוץ מ..."
3. יש את |? כדי לאפשר כפילויות במספור של תתי התבניות.
לשאלתך, הביטוי שכתבת תואם לכל מחרוזת שמתחילה במשהו שהוא לא "hey" ואחריו תו כלשהו שמופיעים 0 או יותר פעמים.